<template>
  <a-card :bordered="false" v-show="visible" class="card" :title="modalTitle">
    <a-row :gutter="48" slot="extra">
      <a-col :md="48" :sm="48">
        <span class="table-page-search-submitButtons" style="float: right">
          <a-button type="primary" @click="save()">提交</a-button>
          <a-button style="margin-left: 8px" @click="handleFresh()">刷新位置</a-button>
          <a-button style="margin-left: 8px" @click="handleCancel()">返回</a-button>
        </span>
      </a-col>
    </a-row>

    <title-divider title="基本信息" width="90px"></title-divider>
    <a-form :form="form">
      <a-form-item v-show="false" >
        <a-input v-decorator="['id']" type="hidden"/>
        <a-input v-decorator="['parentId']" type="hidden"/>
      </a-form-item>

      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="设备（新号）"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              v-decorator="['no', {rules: [{required: true, message: '不能为空'}]}]" />
          </a-form-item>
        </a-col>
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="设备（旧号）"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              v-decorator="['zbh', {rules: [{required: false, message: '不能为空'}]}]" />
          </a-form-item>
        </a-col>
      </a-row>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="设备名称"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              v-decorator="['name', {rules: [{required: true, message: '设备名称不能为空'}]}]" />
          </a-form-item>
        </a-col>
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="型号"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              v-decorator="['model', {rules: [{required: true, message: '设备型号不能为空'}]}]" />
          </a-form-item>
        </a-col>
      </a-row>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="是否固定资产"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-select v-decorator="['isFinancing', { rules: [{required: true, message: '是否显示不能为空'}]}]" placeholder="请选择">
              <a-select-option
                v-for="(label,value) in isFinancingMap"
                :key="value"
                :label="label"
                :value="parseInt(value)">{{ label }}
              </a-select-option>
            </a-select>
          </a-form-item>
        </a-col>
      </a-row>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="设备等级"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-select v-decorator="['level', {initialValue:1, rules: [{required: true, message: '设备等级不能为空'}]}]" placeholder="请选择">
              <a-select-option
                v-for="(label,value) in levelMap"
                :key="value"
                :label="label"
                :value="parseInt(value)">{{ label }}
              </a-select-option>
            </a-select>
          </a-form-item>
        </a-col>
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="设备价格"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"

          >
            <a-input-number
              style="width: 100%"
              :min="0"
              :step="0.01"
              :formatter="BaseTool.Amount.formatter"
              :parser="BaseTool.Amount.parser"
              v-decorator="['initialValue', {rules: [{required: true, message: '设备原值不能为空'}]}]" />
          </a-form-item>
        </a-col>
      </a-row>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="设备类型"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-tree-select
              style="width: 100%"
              :dropdownStyle="{ maxHeight: '400px', overflow: 'auto' }"
              :treeData="sbTypeTreeData"
              :treeNodeFilterProp="'title'"
              :showSearch="true"
              v-decorator="['typeId', {rules: [{required: true, message: '设备类型不能为空'}]}]"
              placeholder="请选择"
            >
            </a-tree-select>
          </a-form-item>
        </a-col>
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="自定义类型"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-select @change="handleChange" v-decorator="['useType', {rules: [{required: true, message: '自定义类型不能为空'}]}]" placeholder="请选择">
              <a-select-option
                v-for="(label,value) in useTypeMap"
                :key="value"
                :label="label"
                :value="parseInt(value)">{{ label }}
              </a-select-option>
            </a-select>
          </a-form-item>
        </a-col>
      </a-row>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="状态"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-select v-decorator="['status', {rules: [{required: true, message: '状态不能为空'}]}]" placeholder="请选择">
              <a-select-option
                v-for="(label,value) in statusMap"
                :key="value"
                :label="label"
                :value="parseInt(value)">{{ label }}
              </a-select-option>
            </a-select>
          </a-form-item>
        </a-col>
      </a-row>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="大小/尺寸"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              v-decorator="['zz']" />
          </a-form-item>
        </a-col>
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="系列号(出厂编号)"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              v-decorator="['zzh']" />
          </a-form-item>
        </a-col>
      </a-row>

      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
<!--        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="使用位置"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              v-decorator="['cph']" />
          </a-form-item>
        </a-col>-->
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="生产商"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-select
              show-search
              option-filter-prop="children"
              :filter-option="filterOptionProducer"
              v-decorator="['producerId']"
              placeholder="请选择">
              <a-select-option
                v-for="({id, name}) in producerList"
                :key="id"
                :label="name"
                :value="id">{{ name }}
              </a-select-option>
            </a-select>
          </a-form-item>
          <a-form-item
            label="生产商"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
            v-show="false"
          >
            <a-input
              v-decorator="['producerId', {rules: [{required: true, message: '生产商不能为空'}]}]" />
          </a-form-item>
        </a-col>
      </a-row>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="父设备"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              disabled
              style="width: 60%"
              v-decorator="['parentSbName']"/>
            <a-button type="primary" style="width: 20%" @click="handleSbSelect">选择</a-button>
            <a-button type="default" style="width: 20%" @click="clearParent">清空</a-button>
          </a-form-item>
        </a-col>
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="是否子设备"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-select @change="childChange" v-decorator="['isChild', { rules: [{required: true, message: '是否子设备不能为空'}]}]" placeholder="请选择">
              <a-select-option
                v-for="(label,value) in isChildMap"
                :key="value"
                :label="label"
                :value="parseInt(value)">{{ label }}
              </a-select-option>
            </a-select>
          </a-form-item>
        </a-col>
      </a-row>

      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="所属车间"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-select v-decorator="['positionId', { rules: [{required: true, message: '所属车间不能为空'}]}]" placeholder="请选择">
              <a-select-option
                v-for="({id,name}) in sbPositionData"
                :key="id"
                :label="name"
                :value="id">{{ name }}
              </a-select-option>
            </a-select>
          </a-form-item>
        </a-col>
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="是否显示"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-select v-decorator="['isShow', { rules: [{required: true, message: '是否显示不能为空'}]}]" placeholder="请选择">
              <a-select-option
                v-for="(label,value) in isShowMap"
                :key="value"
                :label="label"
                :value="parseInt(value)">{{ label }}
              </a-select-option>
            </a-select>
          </a-form-item>
        </a-col>
      </a-row>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="水平位置"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input-number
              :step="1"
              :min="85"
              style="width:70%"
              v-decorator="['zjm']"
              placeholder="请输入离屏幕左上角的右方距离，最低85"/>
            <a-button style="width: 30%" type="primary" @click="handlePoint">设置预览</a-button>
          </a-form-item>
        </a-col>
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="垂直位置"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input-number
              :step="1"
              :min="340"
              style="width:70%"
              v-decorator="['jbdh']"
              placeholder="请输入离屏幕左上角的下方位置，最低340"/>
            <a-button style="width: 30%" type="primary" @click="handlePoint">设置预览</a-button>
          </a-form-item>
        </a-col>
      </a-row>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="备注"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              v-decorator="['remark', {rules: [{required: false, message: '备注不能为空'}]}]" />
          </a-form-item>
        </a-col>
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="使用机台"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-select v-decorator="['saveUser', {rules: [{required: true, message: '项目部不能为空'}]}]" placeholder="请选择">
              <a-select-option
                v-for="({userId, realName}) in userList"
                :key="userId"
                :label="realName"
                :value="userId">{{ realName }}
              </a-select-option>
            </a-select>
          </a-form-item>
        </a-col>
      </a-row>
      <!--      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="所属区域"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-select @change="handleAreaChange" v-decorator="['useArea', {rules: [{required: true, message: '所属区域不能为空'}]}]" placeholder="请选择">
              <a-select-option
                v-for="({deptId, name}) in areaList"
                :key="deptId"
                :label="name"
                :value="deptId">{{ name }}
              </a-select-option>
            </a-select>
          </a-form-item>
        </a-col>
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="所属公司"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-select @change="handleCompanyChange" v-decorator="['useCompany', {rules: [{required: true, message: '所属公司不能为空'}]}]" placeholder="请选择">
              <a-select-option
                v-for="({deptId, name}) in companyList"
                :key="deptId"
                :label="name"
                :value="deptId">{{ name }}
              </a-select-option>
            </a-select>
          </a-form-item>
        </a-col>
      </a-row>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">

        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="所属项目部"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-select @change="handleProjectChange" v-decorator="['useProject', {rules: [{required: true, message: '项目部不能为空'}]}]" placeholder="请选择">
              <a-select-option
                v-for="({deptId, name}) in projectList"
                :key="deptId"
                :label="name"
                :value="deptId">{{ name }}
              </a-select-option>
            </a-select>
          </a-form-item>
        </a-col>
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="所属部门"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-select @change="handleDeptChange" v-decorator="['useDept', {rules: [{required: true, message: '所属公司不能为空'}]}]" placeholder="请选择">
              <a-select-option
                v-for="({deptId, name}) in deptList"
                :key="deptId"
                :label="name"
                :value="deptId">{{ name }}
              </a-select-option>
            </a-select>
          </a-form-item>
        </a-col>
      </a-row>-->
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <!--        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="所属班组"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-select @change="handleGroupChange" v-decorator="['useGroup', {rules: [{required: true, message: '项目部不能为空'}]}]" placeholder="请选择">
              <a-select-option
                v-for="({deptId, name}) in groupList"
                :key="deptId"
                :label="name"
                :value="deptId">{{ name }}
              </a-select-option>
            </a-select>
          </a-form-item>
        </a-col>-->
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="维修负责人"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-select v-decorator="['repairUser']" placeholder="请选择">
              <a-select-option
                v-for="({userId, realName}) in userList"
                :key="userId"
                :label="realName"
                :value="userId">{{ realName }}
              </a-select-option>
            </a-select>
          </a-form-item>
        </a-col>
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="第二维修负责人"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-select v-decorator="['repairUserSecond']" placeholder="请选择">
              <a-select-option
                v-for="({userId, realName}) in userList"
                :key="userId"
                :label="realName"
                :value="userId">{{ realName }}
              </a-select-option>
            </a-select>
          </a-form-item>
        </a-col>
      </a-row>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="购置日期"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-date-picker
              style="width: 100%"
              :format="BaseTool.Date.PICKER_NORM_DATE_PATTERN"
              v-decorator="['buyDate']" />
          </a-form-item>
        </a-col>
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="投用日期"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-date-picker
              style="width: 100%"
              :format="BaseTool.Date.PICKER_NORM_DATE_PATTERN"
              v-decorator="['startDate']" />
          </a-form-item>
        </a-col>
      </a-row>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="使用寿命"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              style="width: 100%"
              suffix="年"
              :formatter="BaseTool.Amount.formatter"
              :parser="BaseTool.Amount.parser"
              v-decorator="['workYear']" />
          </a-form-item>
        </a-col>
      </a-row>
      <title-divider title="自定义参数" width="120px"></title-divider>
      <div class="table-operator">
        <a-button type="primary" @click="handleParam">
          <a-icon type="plus"/>
          添加
        </a-button>
      </div>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :key="index" v-for="(item, index) in paramList" :lg="12" :md="24" :sm="24">
          <a-form-item
            :label="item.name"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              style="width: 70%"
              :defaultValue="item.content"
              disabled
            />
            <a-button style="width: 30%" type="primary" @click="handleDelParam(index)">删除</a-button>
          </a-form-item>
        </a-col>
      </a-row>
      <title-divider title="资产编号" width="90px"></title-divider>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="资产编号1"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              v-decorator="['financingNo']" />
          </a-form-item>
        </a-col>
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="资产编号1"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              v-decorator="['financingNoTwo']" />
          </a-form-item>
        </a-col>
      </a-row>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="资产编号3"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              v-decorator="['financingNoThird']" />
          </a-form-item>
        </a-col>
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="资产编号4"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              v-decorator="['financingNoFour']" />
          </a-form-item>
        </a-col>
      </a-row>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="资产编号5"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              v-decorator="['financingNoFive']" />
          </a-form-item>
        </a-col>
      </a-row>
      <title-divider v-show="useType == 5" title="特种信息" width="90px"></title-divider>
      <div v-show="useType == 5" >
        <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
          <a-col :lg="12" :md="24" :sm="24">
            <a-form-item
              label="注册代码"
              :labelCol="BaseTool.Constant.labelCol"
              :wrapperCol="BaseTool.Constant.wrapperCol"
            >
              <a-input
                v-decorator="['registerNo']" />
            </a-form-item>
          </a-col>
          <a-col :lg="12" :md="24" :sm="24">
            <a-form-item
              label="介质属性"
              :labelCol="BaseTool.Constant.labelCol"
              :wrapperCol="BaseTool.Constant.wrapperCol"
            >
              <a-input
                v-decorator="['characterType']" />
            </a-form-item>
          </a-col>
        </a-row>
        <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
          <a-col :lg="12" :md="24" :sm="24">
            <a-form-item
              label="设备批号"
              :labelCol="BaseTool.Constant.labelCol"
              :wrapperCol="BaseTool.Constant.wrapperCol"
            >
              <a-input
                v-decorator="['batchNo']" />
            </a-form-item>
          </a-col>
          <a-col :lg="12" :md="24" :sm="24">
            <a-form-item
              label="使用登记证编号"
              :labelCol="BaseTool.Constant.labelCol"
              :wrapperCol="BaseTool.Constant.wrapperCol"
            >
              <a-input
                v-decorator="['usedNo']" />
            </a-form-item>
          </a-col>
        </a-row>
        <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
          <a-col :lg="12" :md="24" :sm="24">
            <a-form-item
              label="维护供应商"
              :labelCol="BaseTool.Constant.labelCol"
              :wrapperCol="BaseTool.Constant.wrapperCol"
            >
              <a-input
                v-decorator="['supplier']" />
            </a-form-item>
          </a-col>
          <a-col :lg="12" :md="24" :sm="24">
            <a-form-item
              label="登记日期"
              :labelCol="BaseTool.Constant.labelCol"
              :wrapperCol="BaseTool.Constant.wrapperCol"
            >
              <a-date-picker
                style="width: 100%"
                :format="BaseTool.Date.PICKER_NORM_DATE_PATTERN"
                v-decorator="['registerDate']" />
            </a-form-item>
          </a-col>
        </a-row>
        <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
          <a-col :lg="12" :md="24" :sm="24">
            <a-form-item
              label="设计到期年限"
              :labelCol="BaseTool.Constant.labelCol"
              :wrapperCol="BaseTool.Constant.wrapperCol"
            >
              <a-date-picker
                style="width: 100%"
                :format="BaseTool.Date.PICKER_NORM_DATE_PATTERN"
                v-decorator="['retirementDate']" />
            </a-form-item>
          </a-col>
        </a-row>
      </div>
      <title-divider v-show="useType == 4" title="计量信息" width="90px"></title-divider>
      <div v-show="useType == 4" >
        <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
          <a-col :lg="12" :md="24" :sm="24">
            <a-form-item
              label="测量设备编号"
              :labelCol="BaseTool.Constant.labelCol"
              :wrapperCol="BaseTool.Constant.wrapperCol"
            >
              <a-input
                v-decorator="['cardNo']" />
            </a-form-item>
          </a-col>
          <a-col :lg="12" :md="24" :sm="24">
            <a-form-item
              label="准确度等级"
              :labelCol="BaseTool.Constant.labelCol"
              :wrapperCol="BaseTool.Constant.wrapperCol"
            >
              <a-input
                v-decorator="['fdjxh']" />
            </a-form-item>
          </a-col>
        </a-row>
        <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
          <a-col :lg="12" :md="24" :sm="24">
            <a-form-item
              label="检定单位"
              :labelCol="BaseTool.Constant.labelCol"
              :wrapperCol="BaseTool.Constant.wrapperCol"
            >
              <a-input
                v-decorator="['dph']" />
            </a-form-item>
          </a-col>
          <a-col :lg="12" :md="24" :sm="24">
            <a-form-item
              label="检定人"
              :labelCol="BaseTool.Constant.labelCol"
              :wrapperCol="BaseTool.Constant.wrapperCol"
            >
              <a-input
                v-decorator="['zaiz']" />
            </a-form-item>
          </a-col>
        </a-row>
        <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
          <a-col :lg="12" :md="24" :sm="24">
            <a-form-item
              label="检定结论"
              :labelCol="BaseTool.Constant.labelCol"
              :wrapperCol="BaseTool.Constant.wrapperCol"
            >
              <a-select v-decorator="['rlType']" placeholder="请选择">
                <a-select-option
                  v-for="(label,value) in rlTypeMap"
                  :key="value"
                  :label="label"
                  :value="parseInt(value)">{{ label }}
                </a-select-option>
              </a-select>
            </a-form-item>
          </a-col>
          <a-col :lg="12" :md="24" :sm="24">
            <a-form-item
              label="是否周检查"
              :labelCol="BaseTool.Constant.labelCol"
              :wrapperCol="BaseTool.Constant.wrapperCol"
            >
              <a-select v-decorator="['color']" placeholder="请选择">
                <a-select-option
                  v-for="(label,value) in colorMap"
                  :key="value"
                  :label="label"
                  :value="parseInt(value)">{{ label }}
                </a-select-option>
              </a-select>
            </a-form-item>
          </a-col>
        </a-row>
        <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
          <a-col :lg="12" :md="24" :sm="24">
            <a-form-item
              label="检定证书编号"
              :labelCol="BaseTool.Constant.labelCol"
              :wrapperCol="BaseTool.Constant.wrapperCol"
            >
              <a-input
                v-decorator="['sbdh']" />
            </a-form-item>
          </a-col>
          <a-col :lg="12" :md="24" :sm="24">
            <a-form-item
              label="预警天数"
              :labelCol="BaseTool.Constant.labelCol"
              :wrapperCol="BaseTool.Constant.wrapperCol"
            >
              <a-input-number
                style="width: 100%"
                :min="0"
                :step="0.01"
                :formatter="BaseTool.Amount.formatter"
                :parser="BaseTool.Amount.parser"
                v-decorator="['seatNumber']" />
            </a-form-item>
          </a-col>
        </a-row>
        <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
          <a-col :lg="12" :md="24" :sm="24">
            <a-form-item
              label="检定日期"
              :labelCol="BaseTool.Constant.labelCol"
              :wrapperCol="BaseTool.Constant.wrapperCol"
            >
              <a-date-picker
                style="width: 100%"
                :format="BaseTool.Date.PICKER_NORM_DATE_PATTERN"
                v-decorator="['checkDate']" />
            </a-form-item>
          </a-col>
          <a-col :lg="12" :md="24" :sm="24">
            <a-form-item
              label="检定周期"
              :labelCol="BaseTool.Constant.labelCol"
              :wrapperCol="BaseTool.Constant.wrapperCol"
            >
              <a-input
                style="width: 100%"
                suffix="月"
                :formatter="BaseTool.Amount.formatter"
                :parser="BaseTool.Amount.parser"
                v-decorator="['checkPeriod']" />
            </a-form-item>
          </a-col>
        </a-row>
        <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
          <a-col :lg="12" :md="24" :sm="24">
            <a-form-item
              label="检定有效期至"
              :labelCol="BaseTool.Constant.labelCol"
              :wrapperCol="BaseTool.Constant.wrapperCol"
            >
              <a-date-picker
                style="width: 100%"
                :format="BaseTool.Date.PICKER_NORM_DATE_PATTERN"
                v-decorator="['nextCheckDate']" />
            </a-form-item>
          </a-col>
        </a-row>
      </div>
      <title-divider title="文件信息" width="90px"></title-divider>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="维保手册"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-upload
              :action="uploadUrl"
              :multiple="true"
              :file-list="this.defaultRepairFileList"
              @change="handleRepairFileChange"
              :headers="headers"
            >
              <a-button> <a-icon type="upload" /> 选择上传文件 </a-button>
            </a-upload>
          </a-form-item>
        </a-col>
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="使用手册"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-upload
              :action="uploadUrl"
              :multiple="true"
              :file-list="this.defaultUseFileList"
              @change="handleUseFileChange"
              :headers="headers"
            >
              <a-button> <a-icon type="upload" /> 选择上传文件 </a-button>
            </a-upload>
          </a-form-item>
        </a-col>
      </a-row>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="验收文件"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-upload
              :action="uploadUrl"
              :multiple="true"
              :file-list="this.defaultRecheckFileList"
              @change="handleRecheckFileChange"
              :headers="headers"
            >
              <a-button> <a-icon type="upload" /> 选择上传文件 </a-button>
            </a-upload>
          </a-form-item>
        </a-col>
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="设备图片"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-upload
              :action="uploadUrl"
              :multiple="false"
              :file-list="this.defaultSbFileList"
              @change="handleSbFileChange"
              accept="image/*"
              :headers="headers"
            >
              <a-button> <a-icon type="upload" /> 选择上传文件 </a-button>
            </a-upload>
          </a-form-item>
        </a-col>
      </a-row>
    </a-form>
    <sb-model-select-modal ref="sbModelSelectModal" @selected="handleSbModelSelected"/>
    <sb-info-select-modal ref="sbInfoSelectModal" @selected="handleSbSelectd"/>
    <firm-producer-select-modal ref="producerSelectModal" @selected="handleProducerSelected"/>
    <param-form ref="paramForm" @ok="handleParamList" />
  </a-card>
</template>

<script>
import pick from 'lodash.pick'
import { addSbInfo, updateSbInfo, fetchSbInfo, copySbInfo } from '@/api/sb/info'
import { fetchSbTypeTree } from '@/api/sb/type'
import { querySbPosition } from '@/api/sb/position'
import FirmProducerSelectModal from '@/views/firm/producer/modules/FirmProducerSelectModal'
import SbGuigeSelectModal from '@/views/sb/guige/modules/SbGuigeSelectModal'
import SbModelSelectModal from '@/views/sb/model/modules/SbModelSelectModal'
import BaseTool from '../../../../utils/tool'
import { queryUserDeptByUserDeptId } from '@/api/upms/user-dept'
import { ACCESS_TOKEN } from '@/store/mutation-types'
import Vue from 'vue'
import { uploadUrl } from '@/api/upms/file'
import { queryDept, getDeptsAllByParentId } from '@/api/upms/dept'
import { queryUser } from '@/api/upms/user'
import DetailList from '@/components/tools/DetailList'
import SbInfoSelectModal from '@/views/sb/info/modules/SbInfoSelectModal'
import ParamForm from './ParamForm'
import { queryFirmProducer } from '@/api/firm/producer'
const DetailListItem = DetailList.Item

export default {
  name: 'BaseSbInfo',
  components: {
    FirmProducerSelectModal,
    SbGuigeSelectModal,
    SbModelSelectModal,
    SbInfoSelectModal,
    ParamForm,
    DetailList,
    DetailListItem
  },
  data () {
    return {
      confirmLoading: false,
      modalTitle: null,
      form: this.$form.createForm(this),
      areaList: {},
      companyList: {},
      paramList: [],
      projectList: {},
      deptList: {},
      groupList: {},
      visible: false,
      sbTypeTreeData: [],
      sbPositionData: [],
      // sbInfoTreeData: [],
      // sourceSbInfoTreeData: [],
      // sbPositionTreeData: [],
      depreciationTypeMap: {},
      sourceTypeMap: {},
      levelMap: {},
      rlTypeMap: {},
      colorMap: {},
      useTypeMap: {},
      statusMap: {},
      isChildMap: {},
      isShowMap: {},
      isFinancingMap: {},
      producerList: {},
      userList: {},
      unitMap: {},
      sbInfoSelectType: null,
      repairFileList: [], // 维修手册
      defaultRepairFileList: [],
      defaultUseFileList: [],
      defaultRecheckFileList: [],
      defaultSbFileList: [],
      useFileList: [], // 使用手册
      recheckFileList: [], // 验收手册
      sbFileList: [], // 设备图片,
      uploadUrl: uploadUrl,
      qrcodesrc: null,
      id: null,
      fileList: [],
      type: null,
      headers: {
        Authorization: 'Bearer ' + Vue.ls.get(ACCESS_TOKEN)
      }
    }
  },
  props: {
    useType: {
      type: Number,
      default: 3
    }
  },
  created () {
    this.depreciationTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SBINFO_DEPRECIATIONTYPE)
    this.levelMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SBINFO_LEVEL)
    this.colorMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SB_COLOR)
    this.rlTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.RANLIAO_TYPE)
    this.statusMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SB_INFO_STATUS)
    this.unitMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SBINFO_UNIT)
    this.sourceTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SBTYPE_SOURCETYPE)
    this.useTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SB_USE_TYPE)
    this.isChildMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SB_IS_CHILD)
    this.isShowMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SB_IS_SHOW)
    this.isFinancingMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SB_IS_FINANCING)
    queryFirmProducer({}).then(res => {
      this.producerList = res.data
    })
  },
  methods: {
    base (record, type) {
      this.setTree(record)
      // 清除文件列表
      this.visible = true
      // 选择框查询条件
      // 如果是空标识添加
      if (this.BaseTool.Object.isBlank(record)) {
        this.qrcodesrc = null
        this.modalTitle = '添加'
        this.clearFileList()
        return
      }
      this.useType = record.useType
      this.modalTitle = '编辑'
      this.id = record.id
      this.qrcodesrc = record.qrCode
      this.repairFileList = record.repairFileList
      this.useFileList = record.useFileList
      this.recheckFileList = record.recheckFileList
      this.sbFileList = record.sbFileList
      this.defaultRepairFileList = this.BaseTool.UPLOAD.transImg(this.repairFileList)
      this.defaultUseFileList = this.BaseTool.UPLOAD.transImg(this.useFileList)
      this.defaultRecheckFileList = this.BaseTool.UPLOAD.transImg(this.recheckFileList)
      this.defaultSbFileList = this.BaseTool.UPLOAD.transImg(this.sbFileList)
      this.paramList = JSON.parse(record.paramList)
      if (type === 1) {
        this.type = type
        this.modalTitle = '复制'
        this.qrcodesrc = null
        record.no = null
        this.clearFileList()
      }

      const { form: { setFieldsValue } } = this
      // 日期处理
      // record.buyDate = this.BaseTool.Moment(record.buyDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
      // record.startDate = this.BaseTool.Moment(record.startDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
      // record.nextCheckDate = this.BaseTool.Moment(record.nextCheckDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
      // record.guaranteeDate = this.BaseTool.Moment(record.guaranteeDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
      // record.retirementDate = this.BaseTool.Moment(record.retirementDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)

      // record.lastRepaireTime = this.BaseTool.Moment(record.lastRepaireTime, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
      // record.lastBaoyangTime = this.BaseTool.Moment(record.lastBaoyangTime, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
      if (record.buyDate != null) {
        record.buyDate = this.BaseTool.Moment(record.buyDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        this.$nextTick(() => {
          setFieldsValue(Object.assign(pick(record, [
            'buyDate'
          ])))
        })
      }
      if (record.startDate != null) {
        record.startDate = this.BaseTool.Moment(record.startDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        this.$nextTick(() => {
          setFieldsValue(Object.assign(pick(record, [
            'startDate'
          ])))
        })
      }
      if (record.checkDate != null) {
        record.checkDate = this.BaseTool.Moment(record.checkDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        this.$nextTick(() => {
          setFieldsValue(Object.assign(pick(record, [
            'checkDate'
          ])))
        })
      }
      if (record.nextCheckDate != null) {
        record.nextCheckDate = this.BaseTool.Moment(record.nextCheckDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        this.$nextTick(() => {
          setFieldsValue(Object.assign(pick(record, [
            'nextCheckDate'
          ])))
        })
      }
      if (record.retirementDate != null) {
        record.retirementDate = this.BaseTool.Moment(record.retirementDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        this.$nextTick(() => {
          setFieldsValue(Object.assign(pick(record, [
            'retirementDate'
          ])))
        })
      }
      if (record.registerDate != null) {
        record.registerDate = this.BaseTool.Moment(record.registerDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        this.$nextTick(() => {
          setFieldsValue(Object.assign(pick(record, [
            'registerDate'
          ])))
        })
      }
      record.unitName = this.BaseTool.Object.getField(this.unitMap, record.unit)
      record.useTypeName = this.BaseTool.Object.getField(this.useTypeMap, record.useType)

      this.$nextTick(() => {
        setFieldsValue(Object.assign(pick(record, [
          'id',
          'no',
          'parentId',
          'parentSbName',
          'isChild',
          'isShow',
          'isFinancing',
          'financingNo',
          'financingNoTwo',
          'financingNoThird',
          'financingNoFour',
          'financingNoFive',
          'name',
          'model',
          'cph',
          'positionId',
          'producerName',
          'useArea',
          'useCompany',
          'useProject',
          'useDept',
          'saveUser',
          'repairUser',
          'useGroup',
          'typeId',
          'level',
          'initialValue',
          // 'cutValue',
          'producerId',
          // 'sourceType',
          'unit',
          'buyDate',
          'startDate',
          'zbh',
          // 'wbFile',
          // 'useFile',
          // 'checkFile',
          // 'sbImage',
          'status',
          'remark',
          'zzh',
          'zz',
          'zjm',
          'jbdh',
          'useType',
          'cardNo',
          'fdjxh',
          'checkDate',
          'checkPeriod',
          'nextCheckDate',
          'dph',
          'zaiz',
          'rlType',
          'color',
          'sbdh',
          'seatNumber',
          'registerNo',
          'characterType',
          'usedNo',
          'supplier',
          'repairUserSecond',
          'batchNo',
          'workYear',
          'retirementDate',
          'registerDate'

        ])))
      })
    },
    save () {
      const { form: { validateFieldsAndScroll } } = this
      this.confirmLoading = true
      validateFieldsAndScroll((errors, values) => {
        if (errors) {
          this.confirmLoading = false
          return
        }
        // 日期数据的处理
        values.buyDate = BaseTool.Date.formatter(values.buyDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.startDate = BaseTool.Date.formatter(values.startDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.checkDate = BaseTool.Date.formatter(values.checkDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.nextCheckDate = BaseTool.Date.formatter(values.nextCheckDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.guaranteeDate = BaseTool.Date.formatter(values.guaranteeDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.retirementDate = BaseTool.Date.formatter(values.retirementDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        if (values.registerDate != null) {
          values.registerDate = BaseTool.Date.formatter(values.registerDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        }
        values.lastRepaireTime = this.BaseTool.Date.formatter(values.lastRepaireTime, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.lastBaoyangTime = this.BaseTool.Date.formatter(values.lastBaoyangTime, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.spDate = this.BaseTool.Date.formatter(values.spDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.jbdDate = this.BaseTool.Date.formatter(values.jbdDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.sbdDate = this.BaseTool.Date.formatter(values.sbdDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.sbDate = this.BaseTool.Date.formatter(values.sbDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)

        // 上传文件
        values.repairFileList = this.repairFileList
        values.useFileList = this.useFileList
        values.recheckFileList = this.recheckFileList
        values.sbFileList = this.sbFileList
        values.paramList = JSON.stringify(this.paramList)
        values.useType = this.useType
        if (this.BaseTool.String.isBlank(values.id)) {
          addSbInfo(values)
            .then(() => {
              this.handleCancel(values)
            }).catch(() => {
              this.confirmLoading = false
            })
        } else {
          if (this.type == null) {
            updateSbInfo(values)
              .then(() => {
                this.handleCancel(values)
              }).catch(() => {
                this.confirmLoading = false
              })
          } else {
            copySbInfo(values)
              .then(() => {
                this.type = null
                this.handleCancel(values)
              }).catch(() => {
                this.type = null
                this.confirmLoading = false
              })
          }
        }
      })
    },
    getQrcodeSrc () {
      console.log(111, 22)
    },
    handleCancel () {
      this.type = null
      this.visible = false
      this.confirmLoading = false
      this.form.resetFields()
      this.$emit('ok')
    },
    handleFresh () {
      fetchSbInfo({ id: this.id }).then(res => {
        const { form: { setFieldsValue } } = this
        const record = res.data
        this.$nextTick(() => {
          setFieldsValue(Object.assign(pick(record, [
            'zjm',
            'jbdh'
          ])))
        })
      })
    },
    setTree (record = {}) {
      fetchSbTypeTree().then(res => {
        this.sbTypeTreeData = res.data
      })
      querySbPosition().then(res => {
        this.sbPositionData = res.data
      })
      // getSbInfoTree({ id: record.id }).then(res => {
      //  this.sbInfoTreeData = res.data
      //  this.sourceSbInfoTreeData = res.data
      // })
      // getSbPositionTree().then(res => {
      //  this.sbPositionTreeData = res.data
      // })
      queryDept({ nature: this.DictCache.VALUE.SYS_DEPT_NATURE.JITUAN }).then(res => {
        this.areaList = res.data
      })

      if (record.useArea != null) {
        getDeptsAllByParentId({ deptId: record.useArea, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.FEN_GONG_SI }).then(res => {
          this.companyList = res.data
        })
        getDeptsAllByParentId({ deptId: record.useCompany, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.XIANG_MU_BU }).then(res => {
          this.projectList = res.data
        })
        getDeptsAllByParentId({ deptId: record.useProject, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.BU_MEN }).then(res => {
          this.deptList = res.data
        })
        getDeptsAllByParentId({ deptId: record.useDept, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.BAN_ZU }).then(res => {
          this.groupList = res.data
        })
        queryUser({ }).then(res => {
          this.userList = res.data
        })
      }
      queryUser({ }).then(res => {
        this.userList = res.data
      })
    },
    handleSbModelSelect () {
      const modal = this.$refs.sbModelSelectModal
      modal.base()
    },
    handleSbModelSelected (keys, rows) {
      const [ key ] = keys
      const [ row ] = rows
      const { form: { setFieldsValue } } = this

      this.$nextTick(() => {
        setFieldsValue({
          'modelId': key,
          'name': row.name,
          'model': row.model,
          'nameModel': row.nameModel,
          'typeId': row.typeId,
          'typeName': row.typeName,
          'level': row.level,
          'initialValue': row.value,
          'useType': row.useType,
          'useTypeName': this.BaseTool.Object.getField(this.useTypeMap, row.useType),
          'producerId': row.producerId,
          'producerName': row.producerName,
          'unit': row.unit,
          'unitName': this.BaseTool.Object.getField(this.unitMap, row.unit)
        })
      })
    },

    beforeRecheckFileListUpload (file) {
      const reg = /\.(xls|xlsx)(\?.*)?$/
      return new Promise((resolve, reject) => {
        if (reg.test(file.name)) {
          this.recheckFileList = [file]
          return true
        } else {
          this.$message.error(`请上传正确的xls|xlsx文件`)
          reject(new Error('请上传正确的xls|xlsx文件'))
          return false
        }
      })
    },
    beforeUploadPic (file) {
      const reg = /\.(jpg|jpeg|png)(\?.*)?$/
      return new Promise((resolve, reject) => {
        if (reg.test(file.name)) {
          this.sbFileList = [file]
          return true
        } else {
          this.$message.error(`请上传正确的jpg|jpeg|png文件`)
          reject(new Error('请上传正确的jpg|jpeg|png文件'))
          return false
        }
      })
    },
    clearFileList () {
      this.repairFileList = []
      this.useFileList = []
      this.recheckFileList = []
      this.sbFileList = []
    },
    handleRepairFileChange (info) {
      this.defaultRepairFileList = info.fileList
      this.repairFileList = this.setFileList(info, 1)
    },
    handleUseFileChange (info) {
      this.defaultUseFileList = info.fileList
      this.useFileList = this.setFileList(info, 2)
    },
    handleAreaChange (value) {
      getDeptsAllByParentId({ deptId: value, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.FEN_GONG_SI }).then(res => {
        this.companyList = res.data
      })
    },
    handleCompanyChange (value) {
      getDeptsAllByParentId({ deptId: value, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.XIANG_MU_BU }).then(res => {
        this.projectList = res.data
      })
    },
    handleProjectChange (value) {
      getDeptsAllByParentId({ deptId: value, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.BU_MEN }).then(res => {
        this.deptList = res.data
      })
    },
    handleDeptChange (value) {
      getDeptsAllByParentId({ deptId: value, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.BAN_ZU }).then(res => {
        this.groupList = res.data
      })
    },
    handleGroupChange (value) {
      queryUserDeptByUserDeptId({ deptId: value }).then(res => {
        this.userList = res.data
      })
    },
    handleRecheckFileChange (info) {
      this.defaultRecheckFileList = info.fileList
      this.recheckFileList = this.setFileList(info, 3)
    },
    handleSbFileChange (info) {
      this.defaultSbFileList = info.fileList
      this.sbFileList = this.setFileList(info, 4)
    },
    setFileList1 (info, type) {
      const fileList = [...info.fileList]
      const file = [...info.file]
      if (file.status === 'done') {
        return this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type)
      } else if (file.status === 'removed') {
        return this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type)
      } else if (file.status === 'error') {
        this.$message.error('上传失败')
        return []
      }
    },
    clearParent () {
      const { form: { setFieldsValue } } = this
      // 日期处理
      this.$nextTick(() => {
        setFieldsValue(Object.assign({
          'parentId': null,
          'parentSbName': null
        }))
      })
    },
    // 主子设备切换
    childChange (value) {
      if (value === this.DictCache.VALUE.SB_IS_CHILD.IS_PARENT || value === this.DictCache.VALUE.SB_IS_CHILD.IS_NORMAL) {
        const { form: { setFieldsValue } } = this
        // 日期处理
        this.$nextTick(() => {
          setFieldsValue(Object.assign({
            'parentId': null,
            'parentSbName': null
          }))
        })
      }
    },
    handleSbSelect () {
      this.$refs.sbInfoSelectModal.base({}, { isChild: this.DictCache.VALUE.SB_IS_CHILD.IS_PARENT })
    },
    handleSbSelectd (keys, rows) {
      const [ key ] = keys
      const [ row ] = rows
      const { form: { setFieldsValue } } = this
      // 日期处理
      this.$nextTick(() => {
        setFieldsValue(Object.assign({
          'parentId': key,
          'parentSbName': row.name,
          'isChild': this.DictCache.VALUE.SB_IS_CHILD.IS_CHILD
        }))
      })
    },
    handleChange (value) {
      this.useType = value
    },
    handleProducerSelect () {
      const modal = this.$refs.producerSelectModal
      modal.base({}, { type: 1 })
    },
    handleProducerSelected (record, selectedRowKeys, selectedRow) {
      const { form: { setFieldsValue } } = this
      const [ key ] = selectedRowKeys
      const [ row ] = selectedRow
      setFieldsValue({
        'producerId': key,
        'producerName': row.name
      })
    },
    filterOptionProducer (input, option) {
      return (
        option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
      )
    },
    setFileList (info, type) {
      // { file, fileList }

      const file = info.file
      const fileList = info.fileList
      // fileList = fileList.slice(-2)
      // console.log(111, this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type))

      if (file.status === 'done') {
        return this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type)
      } else if (file.status === 'removed') {
        return this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type)
      } else if (file.status === 'error') {
        this.$message.error('上传失败')
        return null
      }
    },
    handlePoint () {
      const { form: { getFieldValue } } = this
      const zjm = getFieldValue('zjm')
      const jbdh = getFieldValue('jbdh')
      const a = document.createElement('a')
      a.href = '/hitch-screen/point.html?id=' + this.id + '&zjm=' + zjm + '&jbdh=' + jbdh
      a.target = '_blank'
      a.click()
    },
    handleParam () {
      const modal = this.$refs.paramForm
      modal.base(this.model)
    },
    handleParamList (values) {
      console.log(values)
      if (this.paramList == null) {
        this.paramList = []
      }
      this.paramList.push(values)
    },
    handleDelParam (index) {
      console.log(index)
      this.paramList.splice(index, 1)
    }
  }
}
</script>
